/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import modelo.ConsultasExterna;

/**
 *
 * @author jony
 */
public class BaseDatosConsultasExternas {

    private static Statement s = null;
    public static String modelo;

    private static Connection conexion;


    /**
=======
       /**
>>>>>>> .r66
     * Constructor vacío. Carga el driver de la base de datos y abre la
     * conexión.
     */
    public BaseDatosConsultasExternas() throws ClassNotFoundException, SQLException {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection("jdbc:mysql://localhost/proyectosge", "root", "");
        } catch (ClassNotFoundException ex) {
//            System.err.println("ERROR. DBManager(). Error al cargar el driver JDBC de MYSQL");
            JOptionPane.showMessageDialog(null, "Error al cargar el driver JDBC de MySQL", "ERROR", JOptionPane.ERROR_MESSAGE);
            throw ex;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Error con la Base de datos. Comprueba que está iniciada.", "ERROR", JOptionPane.ERROR_MESSAGE);
//            System.err.println("ERROR. DBManager(). Error de SQL");
            throw ex;
        }
    }

    /**
     * Cierra la conexión con la base de datos.
     *
     * @throws java.sql.SQLException. Indica una error de SQL en el intento de
     * cierre de la conexión.
     */
    public void closeConnection() throws java.sql.SQLException {
        try {
            conexion.close();
        } catch (SQLException ex) {
            System.err.println("ERROR. DBManager.closeConnection(). Error al cerrar la conexion");
            throw ex;
        }
    }

    ////////////////////////////////////////////////////
    //                  Consultas Externas
    ///////////////////////////////////////////////////
    /**
     * Recupera todas las CE almacenadas en la base de datos.
     *
     * @return Todas las CE de la base de datos.
     * @throws java.sql.SQLException Indica un error de acceso a la base de
     * datos.
     */
    public ArrayList<ConsultasExterna> getCE() throws java.sql.SQLException {
        ArrayList<ConsultasExterna> alCE = new ArrayList();
        ConsultasExterna ce;
        try {
            s = conexion.createStatement();
            String sql = "select * from consultas";
            ResultSet rs = s.executeQuery(sql);
            while (rs.next()) {
                ce = new ConsultasExterna(rs.getDate("fecha"),rs.getTime("horaEntrada"),rs.getTime("horaSalida"),rs.getString("especialidad"),rs.getInt("idPA"));
               
                alCE.add(ce);
            }
        } catch (SQLException ex) {
            System.err.println("ERROR. DBManager.getCE(). Error de SQL.");
            throw ex;
        }
        JOptionPane.showMessageDialog(null, "Se han cargado correctamente","Informacion",JOptionPane.INFORMATION_MESSAGE);
        s.close();
        return alCE;
    }
    /**
     * Inserta una CE en la base de datos.
     *
     * @param ce CE a insertar.
     * @throws java.sql.SQLException Indica un error de acceso a la base de
     * datos.
     */
    public void addCE(ConsultasExterna ce) throws java.sql.SQLException {
        try {
            s = conexion.createStatement();
            String sql = "insert into consultas (especialidad,fecha,horaEntrada,horaSalida,idConsulta,idPA) values (" + ce.getEspecialidad() + ",'" + ce.getFecha() + ",'" + ce.getHoraEntrada() + ",'" + ce.getHoraSalida() + ",'" + ce.getIdConsulta() + ",'" + ce.getIdPA() + ",')";
            System.out.println(sql);
            s.executeUpdate(sql);
        } catch (SQLException ex) {
            System.err.println("ERROR. DBManager.addCE(). Error de SQL.");
            throw ex;
        }
        JOptionPane.showMessageDialog(null, "Se ha creado correctamente","Informacion",JOptionPane.INFORMATION_MESSAGE);
        s.close();
    }
/**
 * Elimina una consulta externa de la base de datos 
 * 
 * @param ce
 * @throws java.sql.SQLException 
 */
     public void deleteCE(ConsultasExterna ce) throws java.sql.SQLException {
        try {
            s = conexion.createStatement();
            String sql = "delete from consultas where idConsulta=('" +ce.getIdConsulta()+ "')";
            System.out.println(sql);
            s.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
        JOptionPane.showMessageDialog(null, "Se ha borrado correctamente","Informacion",JOptionPane.INFORMATION_MESSAGE);
        s.close();
    }
     
        public void updateCE(ConsultasExterna ce,int idConsulta) throws SQLException {
        try {
            Statement s = conexion.createStatement();
            String sql = "update consulta set fecha ='"+ce.getFecha()+"',horaEntrada='"+ce.getHoraEntrada()+"', horaSalida='" +ce.getHoraSalida()+"',especialidad='"+ce.getEspecialidad()+"', idPA="+ce.getIdPA()+" where idConsulta='" +idConsulta+ "'";
            s.executeUpdate(sql);
        } catch (Exception e) {
            System.err.println("ERROR. DBManager.updateMarca(). Error de SQL.");
            e.printStackTrace();
        }
        JOptionPane.showMessageDialog(null, "Se ha modificado correctamente","Informacion",JOptionPane.INFORMATION_MESSAGE);
        s.close();
    }

}//Fin clase BaseDatosConsultasExternas :)

